"""
创建角色：名字、性别、血量、装备 --> 实例属性
创建房间：            -->
    1.角色可加入房间
    2.房间内的人可互打
    3.房间上限2
战斗：               --> 主程序
    1.装备-防弹衣
    2.血量默认100
    3.正常被攻击-10滴血
    4.有防弹衣-5滴血
"""
import random


class Character(object):
    def __init__(self, name, sex, blood=100):
        # 定义人物姓名、性别、血量、房间状态为无、装备状态为无
        self.name = name
        self.sex = sex
        self.blood = blood
        self.room = False
        self.equipment = False

    def join_room(self, room_num):
        # 加入房间，如果已经加入房间或房间人数已满则无法加入
        if self.room or room_num.n == 2:
            print("您已加入房间或房间人数已满，无法加入！")
            return False
        else:
            self.room = True
            room_num.member.append(self)
            room_num.n += 1
            print(f"{self.name},欢迎您进入房间！")
            print(f"当前房间人数：{room_num.n}")

    def attack(self, others):
        # 每次攻击前随机获得防弹衣，1表示获得防弹衣
        equipment = random.randint(0, 1)
        if equipment == 1:
            print(f"{self.name}获得护盾！")
            self.equipment = True
        else:
            self.equipment = False
        # 存在防弹衣失去5点血
        if others.equipment:
            others.blood -= 5
            print(f"{others.name}受到10点伤害！")
            print(f"剩余血量：{others.blood}")
        # 不存在防弹衣则失去10点血
        else:
            others.blood -= 10
            print(f"{others.name}受到5点伤害！")
            print(f"剩余血量：{others.blood}")


class Room(object):
    def __init__(self, room_num, n=0):
        self.name = room_num
        self.members = []
        self.n = n

    def check_room_member(self):
        if self.n == 2:
            print("战斗开始！")
            self.fight()
        else:
            return False

    def fight(self):
        while True:
            # 玩家0攻击
            self.members[0].attack(self.members[1])
            # 玩家1的血量小于等于0则游戏结束，玩家0获胜
            if self.members[1].blood <= 0:
                print(f"Game Over！{self.members[0].name} Win！")
                break
            # 玩家1攻击
            self.members[1].attack(self.members[0])
            # 玩家0的血量小于等于0则游戏结束，玩家1获胜
            if self.members[0].blood <= 0:
                print(f"Game Over！{self.members[1].name} Win！")
                break


# 主程序
def main_program():
    print("欢迎进入游戏！")
    print("请选择游戏选项：")
    print("1、创建角色\n2、创建房间\n3、加入房间\n4、退出游戏")
    choice = input("请输入选项编号：")

    # 创建玩家
    if choice == '1':
        print("正在创建角色".center(20, '*'))
        name = input("请输入角色名：")
        sex = input("请输入角色性别（女/男）：")
        if sex == '女' or sex == '男':
            characters[name] = Character(name, sex)
            print(f"{name} 角色创建成功".center(20, '*'))
        else:
            print("请输入有效的性别！".center(20, '*'))

    # 创建房间
    elif choice == '2':
        print("正在创建房间".center(20, '*'))
        room_num = input("请输入房间号（数字）：")
        rooms[room_num] = Room(room_num)
        print(f"{room_num} 房间成功创建".center(20, '*'))
    # 加入房间
    elif choice == '3':
        # 显示目前已创建的房间名
        print("已存在的房间".center(20, '*'))
        for key1 in rooms:
            print(key1)
        # 显示目前已创建的角色名
        print("已存在的角色".center(20, '*'))
        for key2 in characters:
            print(key2)
        character1, room1 = input("请输入想要加入的角色名和房间号：").split()
        characters[character1].join_room(rooms[room1])

    # 退出游戏
    elif choice == '4':
        global exit_flag
        exit_flag = True
        print("已退出！")
        exit()
    else:
        print("输入无效，请输入有效的数字！")


# 字典存放角色实例信息和房间实例信息
rooms = {}
characters = {}
exit_flag = False
while True:
    main_program()
    if exit_flag:
        break
